﻿package kit4j.ui.cs;

import java.awt.Font;

/**
 * 字体风格属性类型。
 * 
 * @author MiniKnife
 * 
 */
public class FontStyle {

	/**
	 * 常规字体风格。
	 */
	public static final FontStyle PLAIN = new FontStyle("Plain", Font.PLAIN);

	/**
	 * 加粗字体风格常量。
	 */
	public static final FontStyle BOLD = new FontStyle("Bold", Font.BOLD);

	/**
	 * 斜体字体风格常量。
	 */
	public static final FontStyle ITALIC = new FontStyle("Italic", Font.ITALIC);

	/**
	 * 字体风格名称。
	 */
	private String name;

	/**
	 * 字体风格值。
	 */
	private int value;

	/**
	 * 以指定的名称和字体风格值创建一个字体风格实例。
	 * 
	 * @param name
	 *            字体风格名称
	 * @param value
	 *            字体风格值
	 */
	public FontStyle(String name, int value) {
		this.name = name;
		this.value = value;
	}

	/**
	 * 返回字体风格的名称。
	 * 
	 * @return 名称
	 */
	public String getName() {
		return name;
	}

	/**
	 * 返回字体风格的值。
	 * 
	 * @return 字体风格的值
	 */
	public int getValue() {
		return value;
	}

	@Override
	public int hashCode() {
		int code = 37;
		code = code * 17 + this.name.hashCode();
		code = code * 17 + this.value;

		return code;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj != null) {
			if (obj instanceof FontStyle) {
				if (this.name.equals(((FontStyle) obj).getName())
						&& this.value == ((FontStyle) obj).getValue()) {
					return true;
				}
			}
		}

		return false;
	}

	@Override
	public String toString() {
		return "FontStyle[name=" + name + ",value=" + value;
	}

}
